﻿using System;
using System.Windows.Forms;
using SistemaFinanceiro.classes.core;
using SistemaFinanceiro.classes.entidades;
using SistemaFinanceiro.gui.utils;

namespace SistemaFinanceiro.gui
{
    public partial class FrmRenda : Form
    {
        Fachada fachada = Fachada.Instancia;
        private Renda rendaSelecionada = null;

        public FrmRenda()
        {
            InitializeComponent();
            dtPckrDataHoraEntrada.Value = DateTime.Now;
        }

        private void bttnNovo_Click(object sender, EventArgs e)
        {
            InicializarFormulario();
        }

        private void bttnSalvar_Click(object sender, EventArgs e)
        {
            rendaSelecionada.DataHoraEntrada = dtPckrDataHoraEntrada.Value;
            rendaSelecionada.Descricao = txtDescricao.Text;
            rendaSelecionada.Valor = Convert.ToDouble(txtValor.Text);
            if (chkFixo.Checked)
            {
                rendaSelecionada.DiaRenovacao = Convert.ToInt32(txtDiaRenovacao.Text);
            }
            else
            {
                rendaSelecionada.DiaRenovacao = 0;
            }
            fachada.RendaNegocio.Salvar(rendaSelecionada);

            InicializarFormulario();
        }

        private void CarregarLista()
        {
            dataGrid.Rows.Clear();
            foreach (Renda renda in fachada.RendaNegocio.Listar())
            {
                dataGrid.Rows.Add(new object[] { renda.DataHoraEntrada, renda.Valor, renda.Descricao });
            }
        }

        private void FrmCartao_Load(object sender, EventArgs e)
        {
            InicializarFormulario();
        }

        private void InicializarFormulario()
        {
            FormUtils.LimparCampos(this);
            CarregarLista();

            dtPckrDataHoraEntrada.Value = DateTime.Now;
            dtPckrDataHoraEntrada.Focus();
            chkFixo.Checked = false;
            chkFixo_CheckedChanged(null, null);

            rendaSelecionada = new Renda();
        }

        private void chkFixo_CheckedChanged(object sender, EventArgs e)
        {
            txtDiaRenovacao.Clear();
            txtDiaRenovacao.Enabled = chkFixo.Checked;
        }

        private void dataGrid_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            DataGridViewRow row = dataGrid.CurrentRow;
            DateTime dataHoraEntrada = (DateTime)row.Cells[0].Value;

            rendaSelecionada = fachada.RendaNegocio.ProcurarPorPropriedade("DataHoraEntrada", dataHoraEntrada);
            dtPckrDataHoraEntrada.Value = rendaSelecionada.DataHoraEntrada;
            txtValor.Text = rendaSelecionada.Valor.ToString();
            txtDescricao.Text = rendaSelecionada.Descricao;

            chkFixo.Checked = false;
            if (rendaSelecionada.DiaRenovacao > 0)
            {
                txtDiaRenovacao.Text = rendaSelecionada.DiaRenovacao.ToString();
                chkFixo.Checked = true;
            }
            txtDiaRenovacao.Enabled = chkFixo.Checked;
        }

        private void bttnExcluir_Click(object sender, EventArgs e)
        {
            fachada.RendaNegocio.Remover(rendaSelecionada);
            InicializarFormulario();
        }
    }
}
